package com.memoir.jpa.service;

import com.memoir.jpa.model.TodoDto;
import com.memoir.jpa.repository.TodoCrudRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 1种判断，1种求和,2种增加，3种查找，4种删除
 * @author ldm
 * @since 2017-09-13
 */
@Service
public class TodoCrudService {

    @Autowired
    private TodoCrudRepository todoCrudRepository;

    /**
     * CrudRepository里的save方法,既可以insert也可以update。save时，若id已经存在，则按照新的记录全部覆盖，
     * 没有传递参数的用null代替
     * @param todoDto
     * @return
     */
    public TodoDto saveTodo(TodoDto todoDto){

        return todoCrudRepository.save(todoDto);
    }

    public List<TodoDto> saveTodos(List<TodoDto> todos){

        return (List<TodoDto>)todoCrudRepository.save(todos);
    }

    public long count(){

        return todoCrudRepository.count();
    }

    public Boolean exists(Integer id){
        return todoCrudRepository.exists(id);

    }

    public void delete(Integer id){

        todoCrudRepository.delete(id);
    }

    /**
     * delete必须传dto，先用id去select,有则delete
     * @param todo
     */
    public void delete(TodoDto todo){

        todoCrudRepository.delete(todo);
    }

    public void delete(List<TodoDto> todos){
        todoCrudRepository.delete(todos);
    }


    //...deleteAll此处不再测试

    public List<TodoDto> findAll(){

        return (List<TodoDto>) todoCrudRepository.findAll();
    }

    //此处用的是in查询
    public List<TodoDto> findAll(List<Integer> ids){

        return (List<TodoDto>) todoCrudRepository.findAll(ids);
    }

    //...findOne此处不再测试




}
